#ifndef TREE_H
#define TREE_H


#include "ast.h"
#include "satVisitor.h"

using namespace cilast;

class satEX;

class treeNode {
public:
    int rec;    //for recursive function call
    int unroll; //for loop unroll
    
    treeNode* pre;
    
    stmt* cond;
    satEX* target;
    
    treeNode();
    
    treeNode(int rec, int unroll, treeNode* pre, stmt* cond, satEX* target) : rec(rec), unroll(unroll), pre(pre), cond(cond), target(target) {};
    
    treeNode* setRec(int);
    treeNode* setUnroll(int);
    treeNode* setPre(treeNode*);
    treeNode* setCond(stmt*);
    treeNode* setTarget(satEX*);
    
    ~treeNode();
    

};

class satEX {
    STATE state;
    
    int tr;
    int tb;
    
    int T;
    int B; 
    
    int reach;
    int lf; //loop free
    
public:    
    satEX() {};
};




#endif
